12981 - 영어 끝말잇기
info
- 문제 보기: 12981 - 영어 끝말잇기
- 소요 시간: 18분 46초
- 풀이 언어:
java - 체감 난이도: 2️⃣
- 리뷰 횟수: ✅
풀이 키워드
스포주의
해시
풀이 코드
info
- 메모리: 96600 KB
- 시간: 0 ms
import java.util.*;
class Solution {
public int[] solution(int n, String[] words) {
Map<String, Boolean> usedWordMap = new HashMap<>();
int i = 0;
char lastChar = words[0].charAt(0); // 첫번째 검사 무조건 통과
for (; i < words.length; ++i) {
// 복수 단어 검사
if(usedWordMap.containsKey(words[i])) return new int[]{i%n+1, i/n+1};
usedWordMap.put(words[i], true);
// 첫글자 검사
if (lastChar != words[i].charAt(0)) return new int[]{i%n+1, i/n+1};
lastChar = words[i].charAt(words[i].length()-1);
}
return new int[]{0, 0};
}
}
풀이 해설
끝말잇기에서 탈락하는 사람이 몇번째 턴에 탈락하는지 반환하는 문제이다.
IOOB 터지면 귀찮으니 턴은 따로 변수화하지 말고 i로 words 전체를 순회해서 산술 연산으로 턴을 계산하는 쪽이 낫다.
메모
- 그냥 해시맵
containsKey만 까먹지 않으면 됨